package cn.bdqn.mapper;


import cn.bdqn.pojo.ItripHotelOrder;
import cn.bdqn.util.Page;
import cn.bdqn.vo.ItripHotelOrderEx;
import cn.bdqn.vo.ItripHotelOrderSearchVo;
import cn.bdqn.vo.ItripPersonalOrderRoomVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ItripHotelOrderMapper {
    /**
     * 根据id删除
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);


    /**
     * 增加信息
     * @param record ItripHotelOrder对象
     * @return
     */
    int insert(ItripHotelOrder record);



    /**
     * 按需增加
     * @param record ItripHotelOrder对象
     * @return
     */

    int insertSelective(ItripHotelOrder record);

    /**
     * 通过主键ID获取订单对象
     * @param id
     * @return
     */
    ItripHotelOrder selectByPrimaryKey(Long id);

    /**
     * 按需修改
     * @param record ItripHotelOrder对象
     * @return
     */
    int updateByPrimaryKeySelective(ItripHotelOrder record);

    /**
     * 修改text内容
     * @param record
     * @return
     */
    int updateByPrimaryKeyWithBLOBs(ItripHotelOrder record);



    /**
     * 修改全部
     * @param record ItripHotelOrder对象
     * @return
     */
    int updateByPrimaryKey(ItripHotelOrder record);

    /**
     * 删除订单
     * @param id
     * @return
     */
    int updateOrderStatus(Long id);

    /**
     * 模糊查询订单信息
     * 前端会传值orderType  orderStatus 为-1  所以需要调整
     * @return pageUtil
     */
    List<ItripHotelOrderSearchVo> findHotelOrderListByPage(Page page);




    /**
     * 获取符合条件的酒店订单记录数
     * @param itripHotelOrderEx
     * @return
     */
    Long getTotalHotelOrderCount(ItripHotelOrderEx itripHotelOrderEx);


    /**
     *  加载酒店订单
     * @param orderNo 订单表
     * @return
     */
    List<ItripHotelOrder> getOrderNoList(String orderNo);

    /**
     *  根据订单ID查看个人订单详情-房型相关信息
     * @param orderId 订单表
     * @return
     */
    ItripPersonalOrderRoomVO selectPersonalOrderRoomInfo(@Param("orderId")Long orderId);


    /**
     * 更新状态为已评论
     * @param id
     * @param modifiedBy
     * @return
     * @throws Exception
     */
    public Integer updateHotelOrderStatus(@Param(value = "id")Long id,@Param(value = "modifiedBy")Long modifiedBy) throws Exception;

    /**
     * 通过订单号获取订单
     * @param orderNo 订单号
     * @return
     */
    ItripHotelOrder selectByOrderNo(String orderNo);

    /**
     * 根据订单号修改订单
     * @param record 封装了修改条件的对象
     * @return
     */
    int updateByOrderNo(ItripHotelOrder record);
    //刷新订单，将未支付的状态改成取消

    public int flushCancelOrderStatus();
    //刷新订单，将成功的的状态改成
    public int flushSuccessOrder();

}